﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dominio;
using Log4Net;

namespace HotelGUI
{
    public partial class PrecioHabitaciones : Form
    {
        ISistema sistema = Dominio.Fabrica.getSistema();
        ILog log = FactoryLogs.getLogInstance();
        List<string[]> categorias = null;

        public PrecioHabitaciones()
        {
            InitializeComponent();

            
        }

        private void cmbCategoria_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbCapacidad.SelectedItem != null && cmbCategoria.SelectedItem != null)
                txtCosto.Text = actualizarCosto(cmbCategoria.SelectedItem.ToString(), cmbCapacidad.SelectedItem.ToString()).ToString();
        }

        private void cmbCapacidad_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbCapacidad.SelectedItem != null && cmbCategoria.SelectedItem != null)
              txtCosto.Text = actualizarCosto(cmbCategoria.SelectedItem.ToString(), cmbCapacidad.SelectedItem.ToString()).ToString();
        }

        private float actualizarCosto(string categoria, string capacidad)
        {
            try
            {

                int numCat = 0;
                foreach (string[] l in categorias)
                {
                    if (l[1] == categoria)
                        numCat = int.Parse(l[0]);
                }
                return sistema.obtenerCostoHabitacion(numCat, capacidad);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return 0;
            }
        }

        private void PrecioHabitaciones_Load(object sender, EventArgs e)
        {
            // Esto es asi, hardcodeado
            cmbCapacidad.Items.Add("Simple");
            cmbCapacidad.Items.Add("Doble");
            cmbCapacidad.Items.Add("Triple");

            List<String[]> lst = sistema.traerCategorias(true);
            foreach (string[] l in lst)
            {
                cmbCategoria.Items.Add(l[1]);
            }
            categorias = lst;
            cmbCategoria.SelectedIndex = 0;
            cmbCapacidad.SelectedIndex = 0;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                int num = 0;
                foreach (String[] cate in categorias)
                {
                    if (cate[1] == cmbCategoria.SelectedItem.ToString())
                    {
                        num = int.Parse(cate[0]);
                        break;
                    }
                }
                if (num == 0)
                    MessageBox.Show("No se pudo obtener el identificador de la categoria seleccionada.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    sistema.agregarCostoHabitacion(num, cmbCapacidad.SelectedItem.ToString(), float.Parse(txtCosto.Text));
                    log.info(sistema.obtenerIdUsuarioLogueado(), "Modificacion Precio Habitacion: " + cmbCapacidad.SelectedItem.ToString() + " - " + cmbCategoria.SelectedItem.ToString() + ". Precio Nuevo: " + txtCosto.Text);
                    categorias = sistema.traerCategorias(true);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        
    }
}
